Nr |
Label |
Behaviour Description |
Constraint Ref |
Verdict |
Comments |
1 |
|
CP_LC ? CM_CONTINUE |
Cm_start_inquiry |
|
Start inquiry scan in PLC component |
2 |
|
CP_LC ! CM_CONTINUE |
Cm_start_inquiry |
|
this message is used to notify P_TCI that can start inquiry procedure |
3 |
|
(TCV_id_packet_iac := TSO_get_id_packet (var_lap)) |
|
|
get preamble and sync word for the ID packet used during inquiry |
4 |
|
(TCV_inquiry_instance_counter := 0, TCV_train_counter := 0, TCV_exit:= 0)
|
|
|
initialisation of counters
|
5 |
|
+LTS_scan_a_train
|
|
|
|
6 |
|
(TCV_train_counter := 0, TCV_exit:= 0)
|
|
|
initialisation of counters
|
7 |
|
START T_guard_var(60)
|
|
|
used to exit if the first ID packet in the A train is not received. It will be cancelled after receiving this packet
|
8 |
|
PL ? LC_PL_DATA_IND (TCV_start_inquiry := BIT_TO_INT(LC_PL_DATA_IND.clk), TCV_start_time:=TCV_start_inquiry,TCV_inquiry_counter := 1) CANCEL T_guard_var
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, TSC_a_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
The first ID packet on A train triggers the test to start counting and stores the time stamp
|
9 |
|
REPEAT LTS_monitor_continous_train(TSC_a_train) UNTIL [(TCV_inquiry_counter >= (( var_n_inquiry * 16) - (16 - TSC_start_scan_offset))) OR (TCV_exit <> 0)]
|
|
|
count only reduced number of packets
|
10 |
TS01 |
[TCV_exit <> 0]
|
|
(F) |
A train was not successfull(timeout occured or the required number was not reached)
|
11 |
|
CP_LC ! CM_CONTINUE
|
Cm_terminate_other_ptc |
|
|
12 |
TS02
|
[TCV_exit = 0]
|
|
(P)
|
A train was successfull |
13 |
|
(TCV_start_time_1st_train_packet := TCV_start_inquiry_time_stamp)
|
|
|
store the time stamp of the first ID packet of the last train
|
14 |
|
+LTS_scan_b_train
|
|
|
|
15 |
TS03
|
[TCV_exit <> 0]
|
|
(F)
|
B train was not successfull (timeout occured or the required number was not reached
|
16 |
|
CP_LC ! CM_CONTINUE
|
Cm_terminate_other_ptc
|
|
|
17 |
TS04
|
[TCV_exit = 0]
|
|
(P)
|
B train was successfull
|
18 |
TS05
|
[((TCV_next_slot_id_packet - TCV_same_slot_id_packet) <= TSC_maximum_difference) AND (( TCV_next_slot_id_packet - TCV_same_slot_id_packet) <= TSC_maximum_difference)]
|
|
(P)
|
Check if IUT used two ID packets in the same slot. The absolute difference between the number of ID packets in the same slot and the number of ID packets in different slots shall be less or equal TSC_maximum_difference
|
19 |
TS02
|
[((TCV_next_slot_id_packet=((TCV_inquiry_counter/2)-1)) OR (TCV_next_slot_id_packet=(TCV_inquiry_counter/2))) AND ((TCV_same_slot_id_packet=((TCV_inquiry_counter/2)-1)) OR (TCV_same_slot_id_packet=(TCV_inquiry_counter/2)))]
|
|
(P)
|
The counters TCV_next_slot_id_packet and TCV_same_slot_id_packet should be equal to (TCV_inquiry_counter/2) but taking into account that the frecuency f(k-6) can be first/secons slot: - If it is a first half slot: (TCV_next_slot_id_packet= TCV_inquiry_counter/2)) AND ( TCV_next_slot_id_packet=(TCV_inquiry_counter/2)-1) - If it is a second half slot: (TCV_next_slot_id_packet= (TCV_inquiry_counter/2)-1) AND ( TCV_next_slot_id_packet=TCV_inquiry_counter/2)
|
20 |
|
(TCV_subsequent_train_counter:=1)
|
|
|
|
21 |
|
+LTS_continue_next_sequences |
|
|
the test case continues
|
22 |
TS06
|
[NOT((( TCV_next_slot_id_packet - TCV_same_slot_id_packet) <= TSC_maximum_difference) AND (( TCV_next_slot_id_packet - TCV_same_slot_id_packet) <= TSC_maximum_difference))]
|
|
(F)
|
absolute difference is too big
|
23 |
TS03
|
[TRUE]
|
|
(F)
|
|
24 |
|
CP_LC ! CM_CONTINUE
|
Cm_terminate_other_ptc |
|
|
25 |
TS04
|
? TIMEOUT T_guard_var
|
|
(F)
|
First ID packet of A-train is not received
|
26 |
|
CP_LC ! CM_CONTINUE
|
Cm_terminate_other_ptc
|
|
|
LTS_continue_next_sequences |
27 |
|
(TCV_time_diff:=TSO_get_time_diff( TCV_start_time_1st_train_packet, TCV_start_inquiry_time_stamp, TSC_flag_clk_resolution))
|
|
|
calculate the time distance between the first A and the first B train ..
|
28 |
|
(TCV_time_distance_ab_train := TCV_time_diff + (16 - TSC_start_scan_offset) * 2, TCV_subsequent_train_counter := 2)
|
|
|
..and store this time distance adding the first missing half slots of train A; 2 trains have been received
|
29 |
|
(TCV_start_time_1st_train_packet := TCV_start_inquiry_time_stamp)
|
|
|
store the time stamp of the first ID packet of the last train
|
30 |
|
REPEAT LTS_scan_next_train UNTIL [(TCV_inquiry_instance_counter >= 5) OR (TCV_exit <> 0)]
|
|
|
scan all other trains until 5 inquiry instances have been scanned
|
31 |
TS07
|
[TCV_exit <> 0]
|
|
(F)
|
errors occured
|
32 |
|
REPEAT LTS_scan_next_train UNTIL [(TCV_exit <> 0)]
|
|
|
|
33 |
|
[TCV_exit = 3]
|
|
|
all trains were successfull
|
34 |
|
(TCV_inquiry_length:=TSO_get_time_diff(TCV_start_inquiry, TCV_start_time, TSC_clk_resolution) * 2)
|
|
|
|
35 |
TS05
|
[(TCV_subsequent_train_counter>=4) AND (TCV_inquiry_length<=var_inquiryTO)]
|
|
(P)
|
|
36 |
TS06
|
[TRUE]
|
|
(F)
|
|
37 |
TS07
|
[TRUE]
|
|
(F)
|
errors occured
|
38 |
|
CP_LC ! CM_CONTINUE
|
Cm_terminate_other_ptc |
|
|
39 |
TS08
|
[TCV_exit = 0]
|
|
(P)
|
all trains were successfull
|
LTS_scan_next_train |
40 |
|
[(TCV_train_counter MOD 2) = 0]
|
|
|
if the value of the counter is even, train A will be scanned
|
41 |
|
+LTS_scan_a_train
|
|
|
|
42 |
|
+LTS_continue_scanning
|
|
|
|
43 |
|
[(TCV_train_counter MOD 2) = 1]
|
|
|
if the value of the counter is odd train B will be scanned
|
44 |
|
+LTS_scan_b_train
|
|
|
|
45 |
|
+LTS_continue_scanning
|
|
|
|
46 |
|
[(TCV_subsequent_train_counter MOD 2) = 0]
|
|
|
if the value of the counter is even, train A will be scanned
|
47 |
|
+LTS_scan_train(TSC_a_train)
|
|
|
|
48 |
|
[(TCV_subsequent_train_counter MOD 2) = 1]
|
|
|
if the value of the counter is odd train B will be scanned
|
49 |
|
+LTS_scan_train(TSC_b_train)
|
|
|
|
LTS_continue_scanning
|
50 |
|
[TCV_exit <> 0]
|
|
|
error in train
|
51 |
|
[TCV_exit = 0]
|
|
|
train was successfull
|
52 |
|
(TCV_time_diff:=TSO_get_time_diff( TCV_start_time_1st_train_packet, TCV_start_inquiry_time_stamp, TSC_clk_resolution))
|
|
|
calculate the time distance between the last and the train before
|
53 |
|
(TCV_start_time_1st_train_packet := TCV_start_time, TCV_train_counter := TCV_train_counter + 1)
|
|
|
update timestamp and counter
|
54 |
|
[((TCV_time_diff - TCV_time_distance_ab_train) < 6) AND ((TCV_time_distance_ab_train - TCV_time_diff) < 6)]
|
|
|
the time difference between the first A train and the first B train is nearly the same ( < 6 half slots) to the time difference between the last and the train before. The last train belongs to the old inquiry instance (precondition is that the instance finishes with a B train, so that A and B train continuosly change.
|
55 |
|
(TCV_subsequent_train_counter := TCV_subsequent_train_counter + 1)
|
|
|
|
56 |
|
[((TCV_time_diff - TCV_time_distance_ab_train) > 6) OR ((TCV_time_distance_ab_train - TCV_time_diff) > 6)]
|
|
|
the time difference between the first A train and the first B train is different ( > 6 half slots) to the time difference between the last and the train before. It must be the beginning of a new instance.
|
57 |
TS09
|
[TCV_subsequent_train_counter < 4]
|
|
(F)
|
less than 4 trains have been received in one inquiry instance
|
58 |
|
(TCV_exit:=1)
|
|
|
|
59 |
TS10
|
[TCV_subsequent_train_counter >= 4]
|
|
(P)
|
|
60 |
|
(TCV_inquiry_instance_counter := TCV_inquiry_instance_counter + 1)
|
|
|
next instance
|
61 |
|
(TCV_subsequent_train_counter := 1)
|
|
|
start counting next four subsequent trains; the last train alredy belongs to the new instance
|
LTS_scan_a_train
|
62 |
|
START T_guard_var(60)
|
|
|
used to exit the test step if the first ID packet in the A train is not received. It will be cancelled after receiving this packet
|
63 |
|
+LTS_monitor_first_a_train
|
|
|
trigger the first ID Packet on the A train
|
64 |
|
[TCV_exit <> 0]
|
|
|
first ID packet in A train not found
|
65 |
|
[TCV_exit = 0]
|
|
|
first ID packet in A train found
|
66 |
|
REPEAT LTS_monitor_continous_a_train UNTIL [(TCV_inquiry_counter >= (( var_n_inquiry * 16) - (16 - TSC_start_scan_offset))) OR (TCV_exit <> 0)]
|
|
|
count only reduced number of packets
|
67 |
|
[TCV_exit <> 0]
|
|
|
A train was not successfull (timeout occured or the required number was not reached)
|
68 |
|
[TCV_exit = 0]
|
|
|
A train was successfull
|
LTS_scan_b_train
|
69 |
|
+LTS_monitor_first_b_train
|
|
|
trigger the first ID Packet on the B train
|
70 |
|
[TCV_exit <> 0]
|
|
|
first ID packet in B train not found
|
71 |
|
[TCV_exit = 0]
|
|
|
first ID packet in B train found
|
72 |
|
REPEAT LTS_monitor_continous_b_train UNTIL [(TCV_inquiry_counter >= (var_n_inquiry* 16)) OR (TCV_exit <> 0)]
|
|
|
Because at this time the tester knows the exact sequence it will now completely count the required number of ID-packets
|
73 |
|
[TCV_exit <> 0]
|
|
|
B train was not successfull (timeout occured or the required number was not reached
|
74 |
|
[TCV_exit = 0]
|
|
|
B train was successfull
|
LTS_monitor_first_a_train
|
75 |
|
ACTIVATE (DF_termination_p_lc, DF_every_packet_allowed_p_lc)
|
|
|
|
76 |
|
(TCV_inquiry_counter := 0)
|
|
|
|
77 |
|
PL ? LC_PL_DATA_IND (TCV_start_time := BIT_TO_INT(LC_PL_DATA_IND.clk), TCV_start_inquiry_time_stamp := BIT_TO_INT(LC_PL_DATA_IND.clk)) CANCEL T_guard_var
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, TSC_a_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
The first ID packet on A train triggers the test to start counting and stores the time stamp
|
78 |
|
(TCV_inquiry_counter := TCV_inquiry_counter + 1)
|
|
|
count the first ID packet
|
79 |
|
?TIMEOUT T_guard_var
|
|
|
first ID packet not received
|
80 |
|
(TCV_exit := 2)
|
|
|
cancel test
|
LTS_monitor_first_b_train
|
81 |
|
ACTIVATE (DF_termination_p_lc, DF_every_packet_allowed_p_lc)
|
|
|
|
82 |
|
(TCV_inquiry_counter := 0)
|
|
|
delete counter
|
83 |
|
PL ? LC_PL_DATA_IND (TCV_start_time := BIT_TO_INT(LC_PL_DATA_IND.clk), TCV_start_inquiry_time_stamp := BIT_TO_INT(LC_PL_DATA_IND.clk))
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, TSC_b_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
The first ID packet of the B train triggers the test to start counting and stores the time stamp
|
84 |
|
(TCV_inquiry_counter := TCV_inquiry_counter +1)
|
|
|
count the first ID packet
|
LTS_monitor_continous_a_train
|
85 |
|
ACTIVATE (DF_termination_p_lc, DF_otherwise_fail_p_lc)
|
|
|
|
86 |
|
PL ? LC_PL_DATA_IND (TCV_time_stamp := BIT_TO_INT(LC_PL_DATA_IND.clk))
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, TSC_a_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
waiting for next A train ID packet
|
87 |
|
(TCV_inquiry_counter := TCV_inquiry_counter +1)
|
|
|
increment counter
|
88 |
|
+TS_verify_time_distance(TCV_start_time, TCV_time_stamp)
|
|
|
check if ID packet followed the previous one in the same or in the next but one slot
|
89 |
|
(TCV_start_time := TCV_time_stamp)
|
|
|
prepare counter for next occurrence
|
90 |
|
PL ? LC_PL_DATA_IND
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, TSC_b_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
B train shall not be received when scanning for A train
|
91 |
|
(TCV_exit := 1)
|
|
|
not expected B train occured
|
LTS_monitor_continous_b_train
|
92 |
|
ACTIVATE (DF_termination_p_lc, DF_otherwise_fail_p_lc)
|
|
|
|
93 |
|
PL ? LC_PL_DATA_IND (TCV_time_stamp := BIT_TO_INT(LC_PL_DATA_IND.clk))
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, TSC_b_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
waiting for next B train ID packet
|
94 |
|
(TCV_inquiry_counter := TCV_inquiry_counter +1)
|
|
|
increment counter
|
95 |
|
+TS_verify_time_distance(TCV_start_time, TCV_time_stamp)
|
|
|
check if ID packet followed the previous one in the same or in the next but one slot
|
96 |
|
(TCV_start_time := TCV_time_stamp)
|
|
|
prepare counter for next occurrence
|
97 |
|
PL ? LC_PL_DATA_IND
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, TSC_a_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
A train shall not be received when scanning for B train
|
98 |
|
(TCV_exit := 1)
|
|
|
not expected A train occured
|
LTS_scan_train(var_train:PACKET_INFO)
|
99 |
|
+LTS_monitor_first_id(var_train)
|
|
|
trigger the first ID Packet on the train
|
100 |
|
[TCV_exit <> 0]
|
|
|
first ID packet in train not found
|
101 |
|
[TCV_exit = 0]
|
|
|
first ID packet in train found
|
102 |
|
REPEAT LTS_monitor_continous_train(var_train) UNTIL [(TCV_inquiry_counter >= ( var_n_inquiry * 16)) OR (TCV_exit <> 0)]
|
|
|
Because at this time the tester knows the exact sequence it will now completely count the required number of ID-packets
|
103 |
|
[TCV_exit <> 0]
|
|
|
train was not successfull (timeout occured or the required number was not reached)
|
104 |
|
[TCV_exit = 0]
|
|
|
train was successfull
|
105 |
TS08
|
[((TCV_next_slot_id_packet=((TCV_inquiry_counter/2)-1)) OR (TCV_next_slot_id_packet=(TCV_inquiry_counter/2))) AND ((TCV_same_slot_id_packet=((TCV_inquiry_counter/2)-1)) OR (TCV_same_slot_id_packet=(TCV_inquiry_counter/2)))]
|
|
(P)
|
The counters TCV_next_slot_id_packet and TCV_same_slot_id_packet should be equal to (TCV_inquiry_counter/2) but taking into account that the frecuency f(k-6) can be first/secons slot: - If it is a first half slot: (TCV_next_slot_id_packet= TCV_inquiry_counter/2)) AND ( TCV_next_slot_id_packet=(TCV_inquiry_counter/2)-1) - If it is a second half slot: (TCV_next_slot_id_packet= (TCV_inquiry_counter/2)-1) AND ( TCV_next_slot_id_packet=TCV_inquiry_counter/2)
|
106 |
|
(TCV_subsequent_train_counter:=TCV_subsequent_train_counter+1)
|
|
|
|
107 |
TS09
|
[TRUE]
|
|
(F)
|
|
108 |
|
CP_LC ! CM_CONTINUE
|
Cm_terminate_other_ptc
|
|
|
LTS_monitor_first_id(var_train:PACKET_INFO)
|
109 |
|
ACTIVATE (DF_termination_p_lc, DF_every_packet_allowed_p_lc)
|
|
|
|
110 |
|
(TCV_inquiry_counter := 0)
|
|
|
delete counter
|
111 |
|
PL ? LC_PL_DATA_IND (TCV_start_time := BIT_TO_INT(LC_PL_DATA_IND.clk))
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, var_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
The first ID packet of the train triggers the test to start counting and stores the time stamp
|
112 |
|
(TCV_inquiry_counter := TCV_inquiry_counter +1)
|
|
|
count the first ID packet
|
113 |
|
PL ? LC_PL_DATA_REQ
|
Lc_pl_data_req (TSC_lc_poll_pac, Lc_any_acl_pdu(Packet_header(?,TSC_poll_packet, ?, ?, ?)))
|
|
POLL packet to indicate the end of the test procedure
|
114 |
|
(TCV_exit:=3)
|
|
|
|
LTS_monitor_continous_train(var_train:PACKET_INFO)
|
115 |
|
ACTIVATE (DF_termination_p_lc, DF_otherwise_fail_p_lc)
|
|
|
|
116 |
|
PL ? LC_PL_DATA_IND (TCV_time_stamp := BIT_TO_INT(LC_PL_DATA_IND.clk))
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, var_train, TSC_lc_id_pac, TCV_id_packet_iac)
|
|
waiting for next train ID packet
|
117 |
|
(TCV_inquiry_counter := TCV_inquiry_counter +1)
|
|
|
increment counter
|
118 |
|
+TS_verify_time_distance(TCV_start_time, TCV_time_stamp)
|
|
|
check if ID packet followed the previous one in the same or in the next but one slot
|
119 |
|
(TCV_start_time := TCV_time_stamp)
|
|
|
prepare counter for next occurrence
|
120 |
|
PL ? LC_PL_DATA_IND
|
Lc_pl_data_ind_id_packet( ?, var_tso_id, COMPLEMENT(var_train), TSC_lc_id_pac, TCV_id_packet_iac)
|
|
A packet of the other train shall not be received when scanning for current train
|
121 |
|
(TCV_exit := 1)
|
|
|
|
122 |
|
PL ? LC_PL_DATA_REQ
|
Lc_pl_data_req (TSC_lc_poll_pac, Lc_any_acl_pdu(Packet_header(?,TSC_poll_packet, ?, ?, ?)))
|
|
POLL packet to indicate the end of the test procedure
|
123 |
|
(TCV_exit:=3)
|
|
|
|